package com.meloinfo.common.plugin.entity;

/**
 * 实体实现该接口，表示需要进行状态管理
 * @author 谢磊
 * 
 * @file Stateable.java
 * 
 * @description 
 * 
 * @date 2016年6月1日 下午2:26:53
 *
 */
public interface Stateable<T extends Enum<? extends Stateable.Status>> {
	
	void setStatus(T status);
	
	T getStatus();
	
	/**
	 * 标志接口，所有状态实现，需要实现该接口状态
	 */
	static interface Status {
	}
	
	/**
	 * 审核状态
	 */
	static enum AuditStatus implements Status {
		waiting("等待审核"), fail("审核失败"), success("审核成功");
		private final String info;
		private AuditStatus(String info) {
            this.info = info;
        }
		public String getInfo() {
            return info;
        }
	}
	
	/**
     * 是否显示
     */
    public static enum ShowStatus implements Status {
        hide("不显示"), show("显示");
        private final String info;

        private ShowStatus(String info) {
            this.info = info;
        }
        public String getInfo() {
            return info;
        }
    }
	
}
